Setup

Load necessary packages

library(sf)
library(tidyverse)
library(ggthemes)
library(ggspatial)
library(here)

Read in data
Datasets come from The City of Miami’s Open Data Portal

historic_districts <- st_read(here("Data", "Historic_Districts.geojson"), quiet = TRUE)
landmarks <- st_read(here("Data", "Landmarks.geojson"), quiet = TRUE)

Maps

Plot 1: Single Color + Transparency

This plot shows the locations of all landmarks as well as the outline of historic districts in Miami, Florida. This was an attempt to create a legible plot without using color, though the only black & white basemaps are visually quite busy and detract from the legibility of the plotted shapes and lines.

ggplot() + 
  annotation_map_tile(zoomin = 0, progress = "none", type = "osmgrayscale")  +
  geom_sf(data = historic_districts, color = "Black",  fill = NA, size = 0.5) +
  geom_sf(data = landmarks, shape = 17, size = 2, alpha = 0.35, color = "Black") +
  theme_void()

Plot 2: Exercise in Color Saturation

This map layering landmarks and the historic district in Miami is an example of how too much color can deviate the attention from the map’s purpose. This map, although could be considered a “pretty” map, loses focus of the data presented.

ggplot() + 
  annotation_map_tile(zoomin = 0, progress = "none", type = "stamenwatercolor")  +
  geom_sf(data = historic_districts, color = "Blue", aes(fill = "Historic Districts"), alpha = 0.25) +
  geom_sf(data = landmarks, aes(color = "Landmarks")) +
  scale_fill_manual(values = "Blue", name = " ")+
  labs(caption ="Miami landmarks and Historic District map", color = " ") +
  theme_void()

Plot 3: Filtered Landmarks

This map attempted to display parks and ramps by filtering the Landmarks dataset with the objective of understanding accessibility to public spaces around Miami’s historic district. On experimenting with different basemaps and color schemes, I found the brighter shades of green and yellow to go well with a faded “cartolight” basemap. It was by observing the location of the data points plotted here that I realized that ramps here referred to ‘highway ramps’ and do not actually represent wheelchair accessibility as assumed previously.

parkramp <- landmarks %>%
  filter( LMCNAME == "Park" | 
          LMCNAME == "Ramp")

ggplot() + 
  annotation_map_tile(zoomin = 0, progress = "none", type = "cartolight")  +
  geom_sf(data = historic_districts, color = NA, alpha = 0.5, aes(fill = "Historic Districts")) +
  geom_sf(data = parkramp, aes(color = LMCNAME, shape = LMCNAME), size = 3.5) +
  scale_fill_manual(values = "Black") +
  scale_color_manual(values = c("ForestGreen","Gold")) +
  theme_void() +
  labs(caption = "Parks and wheelchair accessbility around Miami's historic districts", color = " ", shape = " ", fill = " ")

Plot 4: Data Oriented Map

This map is effective in presenting the layered data in a simple straightforward way. The use of color is just enough to highlighting the data of interest. This map questioned our starting assumption that landmark density would be clearly correlated to the Historic District.

ggplot() + 
  annotation_map_tile(zoomin = 0, progress = "none", type = "cartolight")  +
  geom_sf(data = historic_districts, color = "Blue", aes(fill = "Historic Districts"), alpha = 0.25) +
  geom_sf(data = landmarks, aes(color = "Landmarks")) +
  scale_fill_manual(values = "Blue", name = " ")+
  labs(caption ="Miami landmarks and Historic District map", color = " ") +
  theme_void()

Plot 5: Overlaying Basemaps + Layers

This plots adds the dimension of elevation while still trying to retain the street information by overlaying the “cartolight” and “hillshade” basemaps. Equally, to try and retain some of the shading information while still delineating the historic districts, the polygons were drawn both as a fill with high transparency as well as an opaque outline of the same color. Wanted to use this map to emphasize and differentiate the districts rather than the landmarks. Also added north arrow and scale bar.

ggplot() + 
  annotation_map_tile(zoomin = 0, progress = "none", type = "hillshade")  +
  annotation_map_tile(zoomin = 0, progress = "none", type = "cartolight", alpha = 0.4)  +
  geom_sf(data = historic_districts, alpha = 0.5, color = NA, aes(fill = HD_NAME)) +
  geom_sf(data = historic_districts, fill = NA, size = .8, aes(color = HD_NAME)) +
  geom_sf(data = landmarks, size = 1.5, alpha = 0.2, color = "Black") +
  labs(color = " ", fill = " ") +
  annotation_north_arrow(which_north = "true", height = unit(0.75, "cm"), width = unit(0.75, "cm"), style = north_arrow_minimal) +
  annotation_scale( height = unit(0.125, "cm"), pad_x = unit(1.25, "cm")) +
  theme_void()

Contribution Statement

Matt Khinda

Matt drew plots 1 & 5 as well as writing the accompanying descriptions. He also compiled the code and knitted it into the final html file for submission. (12 points)

Esteban Garza

Esteban experimented on different map types, filling transparency and color, layering Landmark data and Historic District polygons (plot 2 & 4) (9 points)

Manasa Acharya

Manasa worked on experimenting with multiple maps representing the landmarks as well as filtering the larger dataset based on its categories. One of these attempts has been published as a part of this web page (plot 3). (9 points)